﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace TwoGesture
{
    public partial class AsignarCuest : Form
    {

        private ControlCrearCuest objCtrCuest = ControlCrearCuest.instCrearCuest();
        private static AsignarCuest objAsignarCuest = null;

        private FormAdmin objFormAdmin = FormAdmin.singleton();

        public AsignarCuest()
        {
            InitializeComponent();
            this.LblIdDoctor.Text = objFormAdmin.LblIdDoctor.Text;
            llenartablacuestionario();
        }


        public void llenartablacuestionario()
        {
            SqlDataReader dr = objCtrCuest.llenarTablaTest(LblIdDoctor);
            dgvCuest.ColumnCount = 2;
            dgvCuest.Columns[0].Name = "Nombre";
            dgvCuest.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvCuest.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dgvCuest.Columns[1].Name = "id";
            dgvCuest.Columns[1].Visible = false;
            
            dgvCuest.Rows.Clear();

            while (dr.Read())
            {
                dgvCuest.Rows.Add(dr.GetString(1), dr.GetInt32(0));
            }

            this.dgvCuest.CellClick += (this.dgvTest_Click);

        }

        public void dgvTest_Click(object sender, DataGridViewCellEventArgs e)
        {
            lblidcuestionario.Text = dgvCuest.Rows[e.RowIndex].Cells[1].Value.ToString();
            txtNombreQuest.Text = dgvCuest.Rows[e.RowIndex].Cells[0].Value.ToString();

            cmbTipoTest.SelectedValue = objCtrCuest.idcategoria(lblidcuestionario.Text);

            List<Categorias> dr = objCtrCuest.llenarTablaPre(lblidcuestionario);
            lblPreguntN.Text = (dr.Count()).ToString();
            dgvCuestPreguntas.Columns.RemoveAt(0);
            dgvCuestPreguntas.DataSource = dr;
            dgvCuestPreguntas.Columns[0].Visible = false;
            dgvCuestPreguntas.Columns[1].HeaderText = "Preguntas";

            Seleccion_Participantes seleccion = Seleccion_Participantes.singleton();
            seleccion.dgvUsuarioSelec.Rows.Clear();
            SqlDataReader drs = objCtrCuest.llenarTblusuario(lblidcuestionario);
           dgvParticipantesLista.ColumnCount = 3;
           dgvParticipantesLista.Columns[0].Name = "ID";
            dgvParticipantesLista.Columns[0].Visible = false;
            dgvParticipantesLista.Columns[1].Name = "Participante(s)";
            dgvParticipantesLista.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

            dgvParticipantesLista.Columns[2].Name = "Esta del Cuestionario";
            dgvParticipantesLista.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dgvParticipantesLista.Rows.Clear();

            String estado = "";
            
            while (drs.Read())
            {
                estado = "Realizado";
                if (drs.GetBoolean(2))
                {
                    estado = "En proceso";
                    seleccion.dgvUsuarioSelec.Rows.Add(drs.GetInt32(0), drs.GetString(1));
                }
                dgvParticipantesLista.Rows.Add(drs.GetInt32(0), drs.GetString(1),estado);
            }

            lblidUsuarioN.Text = dgvParticipantesLista.RowCount.ToString();

            
            //for (int i = 0; i < dgvParticipantesLista.RowCount; i++)
            //{
            //    seleccion.dgvUsuarioSelec.Rows.Add(dgvParticipantesLista.Rows[i].Cells[0].Value.ToString(),
            //    dgvParticipantesLista.Rows[i].Cells[1].Value.ToString());
            //}
            seleccion.llenartablaotra(lblidcuestionario.Text);
            
        }

        public void LLenarcmbTest()
        {
            SqlDataReader dr = objCtrCuest.LlenarCombo();
            List<Categorias> Lista = new List<Categorias>();

            while (dr.Read())
            {
                Lista.Add(new Categorias() { Descripcion = dr.GetString(1), id = dr.GetInt32(0) });
            }
            cmbTipoTest.DataSource = Lista;

            cmbTipoTest.DisplayMember = "Descripcion";
            cmbTipoTest.ValueMember = "Id";
            cmbTipoTest.SelectedIndex = -1;

        }

        private void cmbTipoTest_SelectionChangeCommitted(object sender, EventArgs e)
        {
            lblCategoriaN.Text = cmbTipoTest.Text.ToString();
            lblidCategoriaN.Text = cmbTipoTest.SelectedValue.ToString();
            List<Categorias> dr = objCtrCuest.llenarTablaPreguntas(cmbTipoTest.SelectedValue.ToString());
            lblPreguntN.Text = (dr.Count()).ToString();
            dgvCuestPreguntas.Columns.RemoveAt(0);
            dgvCuestPreguntas.DataSource = dr;
            dgvCuestPreguntas.Columns[0].Visible = false;
            dgvCuestPreguntas.Columns[1].HeaderText = "Preguntas";

        }

       

        private void btnGuardarCuest_Click(object sender, EventArgs e)
        {
            string mensaje = "Los siguentes elementos son requeridos:\n";
            bool bandera = false;
            if (txtNombreQuest.Text.Trim().Equals(""))
            {
                mensaje = mensaje + " -Nombre\n";
                bandera = true;
            }
            if (!lblPreguntN.Text.Equals("20"))
            {
                mensaje = mensaje + " -Seleccionar una categoria con mas de 20 preguntas\n";
                bandera = true;
            }
            if (lblidUsuarioN.Text.Equals("0"))
            {
                mensaje = mensaje + " -Seleccionar almenos un participante";
                bandera = true;
            }
            if (bandera)
            {
                MessageBox.Show(mensaje);
            }
            else
            {

                objCtrCuest.insertarCuestionario(txtNombreQuest, dgvCuestPreguntas, dgvParticipantesLista, LblIdDoctor);
                limpiarquest();

            }
            llenartablacuestionario();
        }

       

        private void limpiarquest()
        {
            txtNombreQuest.Text = "";
            cmbTipoTest.SelectedIndex = -1;
            List<Categorias> dr = objCtrCuest.llenarTablaPreguntas("0");
            dgvCuestPreguntas.DataSource = dr;
            dgvParticipantesLista.Rows.Clear();

            lblidUsuarioN.Text = "0";
            lblPreguntN.Text = "0";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            AgregarPregunta.cierre();
            this.Enabled = false;
            AgregarPregunta objAgregarPregunta = AgregarPregunta.singleton();
            objAgregarPregunta.Show();
        }

        private void AsignarCuest_Load(object sender, EventArgs e)
        {
            LLenarcmbTest();
            dgvCuestPreguntas.ColumnCount = 1;
            dgvCuestPreguntas.Columns[0].Name = "Preguntas";
            dgvParticipantesLista.ColumnCount = 1;
            dgvParticipantesLista.Columns[0].Name = "Participante(s)";
            dgvParticipantesLista.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        }

        public static AsignarCuest singleton()
        {
            if (objAsignarCuest == null)
            {
                objAsignarCuest = new AsignarCuest();
            }
            return objAsignarCuest;
        }

        public static void nuevo()
        {
            objAsignarCuest = null;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Seleccion_Participantes.nuevo();
            FormAdmin a = FormAdmin.singleton();
            a.Enabled = true;

            this.Hide();
        }

        private void btnEliminarCuest_Click(object sender, EventArgs e)
        {
            llenartablacuestionario();
        }

        private void btnLimpiarCuest_Click_1(object sender, EventArgs e)
        {
            limpiarquest();
            Seleccion_Participantes.nuevo();
        }

        private void btnSeleccionar_Click_1(object sender, EventArgs e)
        {
            Seleccion_Participantes seleccion = Seleccion_Participantes.singleton();
            seleccion.copia();
            this.Enabled = false;
            seleccion.Show();
        }
    }
}
